package demo01;

/**
 * @author shkstart
 * @create 2020-04-25 21:58
 */
public class ChiHuo extends Thread{
    //1.需要在成员位置创建一个包子变量
    private BaoZi bz;
    //2.使用带参数构造方法，这个包子变量赋值
    public ChiHuo(BaoZi bz){
        this.bz = bz;
    }
    //设置线程任务run吃包子
    @Override
    public void run() {
        //使用死循环，让吃货一直吃包子
        while (true){
            //必须同时同步技术保证两个线程只能有一个在执行
            synchronized (bz){
                if (bz.flag==false){
                    //吃货调用wait方法进入等待状态
                    try {
                        bz.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                //被唤醒之后执行代码,吃包子
                System.out.println("吃货正在吃：" + bz.pi + bz.xian + "的包子");
                //吃货正在吃包子
                //修改包子的状态为false没有
                bz.flag = false;
                //吃货唤醒包子铺线程，生产包子
                bz.notify();
                System.out.println("吃货已经把：" + bz.pi + bz.xian + "的包子吃完了，包子铺开始生产包子了");
                System.out.println("----------------------------------------");
            }
        }
    }
}
